function BubbleSort() {

}

BubbleSort.sort = function(arr) {
    var tmp = 0;
    
    //记录最后一次交换的位置
    var lastExchangeIndex = 0;
    //无序数列的边界，每次比较只需要比到这里为止
    var sortBorder = arr.length - 1;
    for(var i = 0; i < arr.length; i++)
    {
        //有序标记，每一轮的初始是true
        var isSorted = true;

        for(var j = 0; j < sortBorder; j++)
        {
            if(arr[j] > arr[j+1])
            {
                tmp = arr[j];
                arr[j] = arr[j+1];
                arr[j+1] = tmp;
                //有元素交换，所以不是有序，标记变为false
                isSorted = false;
                //把无序数列的边界更新为最后一次交换元素的位置
                lastExchangeIndex = j;
            }
        }
        sortBorder = lastExchangeIndex;

        if(isSorted){
            break;
        }
    }
};


var arr = new Array(3,4,2,1,5,6,7,8);
BubbleSort.sort(arr);
console.log(arr);